package com.ehotting.edsta.circuitDesign.generator.domain;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 
 * @TableName ot_roducts
 */
public class OtRoducts implements Serializable {
    /**
     * 产品ID，主键
     */
    private Integer productID;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 产品描述
     */
    private String productDescription;

    /**
     * 类别ID
     */
    private Integer categoryID;

    /**
     * 子类别ID
     */
    private Integer subCategoryID;

    /**
     * 品牌ID
     */
    private Integer brandID;

    /**
     * 供应商ID
     */
    private Integer supplierID;

    /**
     * 制造商ID
     */
    private Integer manufacturerID;

    /**
     * 型号
     */
    private String modelNumber;

    /**
     * 库存单位编号，唯一
     */
    private String SKU;

    /**
     * 通用产品代码
     */
    private String UPC;

    /**
     * 欧洲商品编号
     */
    private String EAN;

    /**
     * 国际标准书号（如果适用）
     */
    private String ISBN;

    /**
     * 重量
     */
    private BigDecimal weight;

    /**
     * 尺寸，长x宽x高
     */
    private String dimensions;

    /**
     * 颜色
     */
    private String color;

    /**
     * 材质
     */
    private String material;

    /**
     * 是否已停产
     */
    private Integer isDiscontinued;

    /**
     * 停产日期
     */
    private Date discontinuedDate;

    /**
     * 销售价格
     */
    private BigDecimal price;

    /**
     * 建议零售价
     */
    private BigDecimal MSRP;

    /**
     * 促销价格
     */
    private BigDecimal salePrice;

    /**
     * 折扣百分比
     */
    private BigDecimal discountPercentage;

    /**
     * 库存数量
     */
    private Integer stockQuantity;

    /**
     * 再订购水平
     */
    private Integer reorderLevel;

    /**
     * 补货日期
     */
    private Date restockDate;

    /**
     * 保修期（月）
     */
    private Integer warrantyPeriod;

    /**
     * 保修类型
     */
    private String warrantyType;

    /**
     * 发布日期
     */
    private Date releaseDate;

    /**
     * 最后更新时间
     */
    private Date lastUpdated;

    /**
     * 创建者ID（可能链接到用户表）
     */
    private Integer createdBy;

    /**
     * 更新者ID（可能链接到用户表）
     */
    private Integer updatedBy;

    /**
     * 原产国
     */
    private String countryOfOrigin;

    /**
     * 运输重量
     */
    private BigDecimal shippingWeight;

    /**
     * 运输尺寸
     */
    private String shippingDimensions;

    /**
     * 关键词
     */
    private String keywords;

    /**
     * 图片URL的逗号分隔列表
     */
    private String images;

    /**
     * 视频URL
     */
    private String videoURL;

    /**
     * 技术规格
     */
    private String technicalSpecifications;

    /**
     * 兼容性说明
     */
    private String compatibilityNotes;

    /**
     * 是否需要组装
     */
    private Integer assemblyRequired;

    /**
     * 组装说明
     */
    private String assemblyInstructions;

    /**
     * 用户手册URL
     */
    private String userManualURL;

    /**
     * 安全警告
     */
    private String safetyWarnings;

    /**
     * 平均评分
     */
    private BigDecimal reviewsAverage;

    /**
     * 评价数量
     */
    private Integer numReviews;

    /**
     * 评分计数（可能与NumReviews相同，取决于业务逻辑）
     */
    private Integer ratingCount;

    /**
     * 是否为特色商品
     */
    private Integer isFeatured;

    /**
     * 是否在促销中
     */
    private Integer isOnSale;

    /**
     * 促销结束日期
     */
    private Date promotionEndDate;

    private static final long serialVersionUID = 1L;

    /**
     * 产品ID，主键
     */
    public Integer getProductID() {
        return productID;
    }

    /**
     * 产品ID，主键
     */
    public void setProductID(Integer productID) {
        this.productID = productID;
    }

    /**
     * 产品名称
     */
    public String getProductName() {
        return productName;
    }

    /**
     * 产品名称
     */
    public void setProductName(String productName) {
        this.productName = productName;
    }

    /**
     * 产品描述
     */
    public String getProductDescription() {
        return productDescription;
    }

    /**
     * 产品描述
     */
    public void setProductDescription(String productDescription) {
        this.productDescription = productDescription;
    }

    /**
     * 类别ID
     */
    public Integer getCategoryID() {
        return categoryID;
    }

    /**
     * 类别ID
     */
    public void setCategoryID(Integer categoryID) {
        this.categoryID = categoryID;
    }

    /**
     * 子类别ID
     */
    public Integer getSubCategoryID() {
        return subCategoryID;
    }

    /**
     * 子类别ID
     */
    public void setSubCategoryID(Integer subCategoryID) {
        this.subCategoryID = subCategoryID;
    }

    /**
     * 品牌ID
     */
    public Integer getBrandID() {
        return brandID;
    }

    /**
     * 品牌ID
     */
    public void setBrandID(Integer brandID) {
        this.brandID = brandID;
    }

    /**
     * 供应商ID
     */
    public Integer getSupplierID() {
        return supplierID;
    }

    /**
     * 供应商ID
     */
    public void setSupplierID(Integer supplierID) {
        this.supplierID = supplierID;
    }

    /**
     * 制造商ID
     */
    public Integer getManufacturerID() {
        return manufacturerID;
    }

    /**
     * 制造商ID
     */
    public void setManufacturerID(Integer manufacturerID) {
        this.manufacturerID = manufacturerID;
    }

    /**
     * 型号
     */
    public String getModelNumber() {
        return modelNumber;
    }

    /**
     * 型号
     */
    public void setModelNumber(String modelNumber) {
        this.modelNumber = modelNumber;
    }

    /**
     * 库存单位编号，唯一
     */
    public String getSKU() {
        return SKU;
    }

    /**
     * 库存单位编号，唯一
     */
    public void setSKU(String SKU) {
        this.SKU = SKU;
    }

    /**
     * 通用产品代码
     */
    public String getUPC() {
        return UPC;
    }

    /**
     * 通用产品代码
     */
    public void setUPC(String UPC) {
        this.UPC = UPC;
    }

    /**
     * 欧洲商品编号
     */
    public String getEAN() {
        return EAN;
    }

    /**
     * 欧洲商品编号
     */
    public void setEAN(String EAN) {
        this.EAN = EAN;
    }

    /**
     * 国际标准书号（如果适用）
     */
    public String getISBN() {
        return ISBN;
    }

    /**
     * 国际标准书号（如果适用）
     */
    public void setISBN(String ISBN) {
        this.ISBN = ISBN;
    }

    /**
     * 重量
     */
    public BigDecimal getWeight() {
        return weight;
    }

    /**
     * 重量
     */
    public void setWeight(BigDecimal weight) {
        this.weight = weight;
    }

    /**
     * 尺寸，长x宽x高
     */
    public String getDimensions() {
        return dimensions;
    }

    /**
     * 尺寸，长x宽x高
     */
    public void setDimensions(String dimensions) {
        this.dimensions = dimensions;
    }

    /**
     * 颜色
     */
    public String getColor() {
        return color;
    }

    /**
     * 颜色
     */
    public void setColor(String color) {
        this.color = color;
    }

    /**
     * 材质
     */
    public String getMaterial() {
        return material;
    }

    /**
     * 材质
     */
    public void setMaterial(String material) {
        this.material = material;
    }

    /**
     * 是否已停产
     */
    public Integer getIsDiscontinued() {
        return isDiscontinued;
    }

    /**
     * 是否已停产
     */
    public void setIsDiscontinued(Integer isDiscontinued) {
        this.isDiscontinued = isDiscontinued;
    }

    /**
     * 停产日期
     */
    public Date getDiscontinuedDate() {
        return discontinuedDate;
    }

    /**
     * 停产日期
     */
    public void setDiscontinuedDate(Date discontinuedDate) {
        this.discontinuedDate = discontinuedDate;
    }

    /**
     * 销售价格
     */
    public BigDecimal getPrice() {
        return price;
    }

    /**
     * 销售价格
     */
    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    /**
     * 建议零售价
     */
    public BigDecimal getMSRP() {
        return MSRP;
    }

    /**
     * 建议零售价
     */
    public void setMSRP(BigDecimal MSRP) {
        this.MSRP = MSRP;
    }

    /**
     * 促销价格
     */
    public BigDecimal getSalePrice() {
        return salePrice;
    }

    /**
     * 促销价格
     */
    public void setSalePrice(BigDecimal salePrice) {
        this.salePrice = salePrice;
    }

    /**
     * 折扣百分比
     */
    public BigDecimal getDiscountPercentage() {
        return discountPercentage;
    }

    /**
     * 折扣百分比
     */
    public void setDiscountPercentage(BigDecimal discountPercentage) {
        this.discountPercentage = discountPercentage;
    }

    /**
     * 库存数量
     */
    public Integer getStockQuantity() {
        return stockQuantity;
    }

    /**
     * 库存数量
     */
    public void setStockQuantity(Integer stockQuantity) {
        this.stockQuantity = stockQuantity;
    }

    /**
     * 再订购水平
     */
    public Integer getReorderLevel() {
        return reorderLevel;
    }

    /**
     * 再订购水平
     */
    public void setReorderLevel(Integer reorderLevel) {
        this.reorderLevel = reorderLevel;
    }

    /**
     * 补货日期
     */
    public Date getRestockDate() {
        return restockDate;
    }

    /**
     * 补货日期
     */
    public void setRestockDate(Date restockDate) {
        this.restockDate = restockDate;
    }

    /**
     * 保修期（月）
     */
    public Integer getWarrantyPeriod() {
        return warrantyPeriod;
    }

    /**
     * 保修期（月）
     */
    public void setWarrantyPeriod(Integer warrantyPeriod) {
        this.warrantyPeriod = warrantyPeriod;
    }

    /**
     * 保修类型
     */
    public String getWarrantyType() {
        return warrantyType;
    }

    /**
     * 保修类型
     */
    public void setWarrantyType(String warrantyType) {
        this.warrantyType = warrantyType;
    }

    /**
     * 发布日期
     */
    public Date getReleaseDate() {
        return releaseDate;
    }

    /**
     * 发布日期
     */
    public void setReleaseDate(Date releaseDate) {
        this.releaseDate = releaseDate;
    }

    /**
     * 最后更新时间
     */
    public Date getLastUpdated() {
        return lastUpdated;
    }

    /**
     * 最后更新时间
     */
    public void setLastUpdated(Date lastUpdated) {
        this.lastUpdated = lastUpdated;
    }

    /**
     * 创建者ID（可能链接到用户表）
     */
    public Integer getCreatedBy() {
        return createdBy;
    }

    /**
     * 创建者ID（可能链接到用户表）
     */
    public void setCreatedBy(Integer createdBy) {
        this.createdBy = createdBy;
    }

    /**
     * 更新者ID（可能链接到用户表）
     */
    public Integer getUpdatedBy() {
        return updatedBy;
    }

    /**
     * 更新者ID（可能链接到用户表）
     */
    public void setUpdatedBy(Integer updatedBy) {
        this.updatedBy = updatedBy;
    }

    /**
     * 原产国
     */
    public String getCountryOfOrigin() {
        return countryOfOrigin;
    }

    /**
     * 原产国
     */
    public void setCountryOfOrigin(String countryOfOrigin) {
        this.countryOfOrigin = countryOfOrigin;
    }

    /**
     * 运输重量
     */
    public BigDecimal getShippingWeight() {
        return shippingWeight;
    }

    /**
     * 运输重量
     */
    public void setShippingWeight(BigDecimal shippingWeight) {
        this.shippingWeight = shippingWeight;
    }

    /**
     * 运输尺寸
     */
    public String getShippingDimensions() {
        return shippingDimensions;
    }

    /**
     * 运输尺寸
     */
    public void setShippingDimensions(String shippingDimensions) {
        this.shippingDimensions = shippingDimensions;
    }

    /**
     * 关键词
     */
    public String getKeywords() {
        return keywords;
    }

    /**
     * 关键词
     */
    public void setKeywords(String keywords) {
        this.keywords = keywords;
    }

    /**
     * 图片URL的逗号分隔列表
     */
    public String getImages() {
        return images;
    }

    /**
     * 图片URL的逗号分隔列表
     */
    public void setImages(String images) {
        this.images = images;
    }

    /**
     * 视频URL
     */
    public String getVideoURL() {
        return videoURL;
    }

    /**
     * 视频URL
     */
    public void setVideoURL(String videoURL) {
        this.videoURL = videoURL;
    }

    /**
     * 技术规格
     */
    public String getTechnicalSpecifications() {
        return technicalSpecifications;
    }

    /**
     * 技术规格
     */
    public void setTechnicalSpecifications(String technicalSpecifications) {
        this.technicalSpecifications = technicalSpecifications;
    }

    /**
     * 兼容性说明
     */
    public String getCompatibilityNotes() {
        return compatibilityNotes;
    }

    /**
     * 兼容性说明
     */
    public void setCompatibilityNotes(String compatibilityNotes) {
        this.compatibilityNotes = compatibilityNotes;
    }

    /**
     * 是否需要组装
     */
    public Integer getAssemblyRequired() {
        return assemblyRequired;
    }

    /**
     * 是否需要组装
     */
    public void setAssemblyRequired(Integer assemblyRequired) {
        this.assemblyRequired = assemblyRequired;
    }

    /**
     * 组装说明
     */
    public String getAssemblyInstructions() {
        return assemblyInstructions;
    }

    /**
     * 组装说明
     */
    public void setAssemblyInstructions(String assemblyInstructions) {
        this.assemblyInstructions = assemblyInstructions;
    }

    /**
     * 用户手册URL
     */
    public String getUserManualURL() {
        return userManualURL;
    }

    /**
     * 用户手册URL
     */
    public void setUserManualURL(String userManualURL) {
        this.userManualURL = userManualURL;
    }

    /**
     * 安全警告
     */
    public String getSafetyWarnings() {
        return safetyWarnings;
    }

    /**
     * 安全警告
     */
    public void setSafetyWarnings(String safetyWarnings) {
        this.safetyWarnings = safetyWarnings;
    }

    /**
     * 平均评分
     */
    public BigDecimal getReviewsAverage() {
        return reviewsAverage;
    }

    /**
     * 平均评分
     */
    public void setReviewsAverage(BigDecimal reviewsAverage) {
        this.reviewsAverage = reviewsAverage;
    }

    /**
     * 评价数量
     */
    public Integer getNumReviews() {
        return numReviews;
    }

    /**
     * 评价数量
     */
    public void setNumReviews(Integer numReviews) {
        this.numReviews = numReviews;
    }

    /**
     * 评分计数（可能与NumReviews相同，取决于业务逻辑）
     */
    public Integer getRatingCount() {
        return ratingCount;
    }

    /**
     * 评分计数（可能与NumReviews相同，取决于业务逻辑）
     */
    public void setRatingCount(Integer ratingCount) {
        this.ratingCount = ratingCount;
    }

    /**
     * 是否为特色商品
     */
    public Integer getIsFeatured() {
        return isFeatured;
    }

    /**
     * 是否为特色商品
     */
    public void setIsFeatured(Integer isFeatured) {
        this.isFeatured = isFeatured;
    }

    /**
     * 是否在促销中
     */
    public Integer getIsOnSale() {
        return isOnSale;
    }

    /**
     * 是否在促销中
     */
    public void setIsOnSale(Integer isOnSale) {
        this.isOnSale = isOnSale;
    }

    /**
     * 促销结束日期
     */
    public Date getPromotionEndDate() {
        return promotionEndDate;
    }

    /**
     * 促销结束日期
     */
    public void setPromotionEndDate(Date promotionEndDate) {
        this.promotionEndDate = promotionEndDate;
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        OtRoducts other = (OtRoducts) that;
        return (this.getProductID() == null ? other.getProductID() == null : this.getProductID().equals(other.getProductID()))
            && (this.getProductName() == null ? other.getProductName() == null : this.getProductName().equals(other.getProductName()))
            && (this.getProductDescription() == null ? other.getProductDescription() == null : this.getProductDescription().equals(other.getProductDescription()))
            && (this.getCategoryID() == null ? other.getCategoryID() == null : this.getCategoryID().equals(other.getCategoryID()))
            && (this.getSubCategoryID() == null ? other.getSubCategoryID() == null : this.getSubCategoryID().equals(other.getSubCategoryID()))
            && (this.getBrandID() == null ? other.getBrandID() == null : this.getBrandID().equals(other.getBrandID()))
            && (this.getSupplierID() == null ? other.getSupplierID() == null : this.getSupplierID().equals(other.getSupplierID()))
            && (this.getManufacturerID() == null ? other.getManufacturerID() == null : this.getManufacturerID().equals(other.getManufacturerID()))
            && (this.getModelNumber() == null ? other.getModelNumber() == null : this.getModelNumber().equals(other.getModelNumber()))
            && (this.getSKU() == null ? other.getSKU() == null : this.getSKU().equals(other.getSKU()))
            && (this.getUPC() == null ? other.getUPC() == null : this.getUPC().equals(other.getUPC()))
            && (this.getEAN() == null ? other.getEAN() == null : this.getEAN().equals(other.getEAN()))
            && (this.getISBN() == null ? other.getISBN() == null : this.getISBN().equals(other.getISBN()))
            && (this.getWeight() == null ? other.getWeight() == null : this.getWeight().equals(other.getWeight()))
            && (this.getDimensions() == null ? other.getDimensions() == null : this.getDimensions().equals(other.getDimensions()))
            && (this.getColor() == null ? other.getColor() == null : this.getColor().equals(other.getColor()))
            && (this.getMaterial() == null ? other.getMaterial() == null : this.getMaterial().equals(other.getMaterial()))
            && (this.getIsDiscontinued() == null ? other.getIsDiscontinued() == null : this.getIsDiscontinued().equals(other.getIsDiscontinued()))
            && (this.getDiscontinuedDate() == null ? other.getDiscontinuedDate() == null : this.getDiscontinuedDate().equals(other.getDiscontinuedDate()))
            && (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice()))
            && (this.getMSRP() == null ? other.getMSRP() == null : this.getMSRP().equals(other.getMSRP()))
            && (this.getSalePrice() == null ? other.getSalePrice() == null : this.getSalePrice().equals(other.getSalePrice()))
            && (this.getDiscountPercentage() == null ? other.getDiscountPercentage() == null : this.getDiscountPercentage().equals(other.getDiscountPercentage()))
            && (this.getStockQuantity() == null ? other.getStockQuantity() == null : this.getStockQuantity().equals(other.getStockQuantity()))
            && (this.getReorderLevel() == null ? other.getReorderLevel() == null : this.getReorderLevel().equals(other.getReorderLevel()))
            && (this.getRestockDate() == null ? other.getRestockDate() == null : this.getRestockDate().equals(other.getRestockDate()))
            && (this.getWarrantyPeriod() == null ? other.getWarrantyPeriod() == null : this.getWarrantyPeriod().equals(other.getWarrantyPeriod()))
            && (this.getWarrantyType() == null ? other.getWarrantyType() == null : this.getWarrantyType().equals(other.getWarrantyType()))
            && (this.getReleaseDate() == null ? other.getReleaseDate() == null : this.getReleaseDate().equals(other.getReleaseDate()))
            && (this.getLastUpdated() == null ? other.getLastUpdated() == null : this.getLastUpdated().equals(other.getLastUpdated()))
            && (this.getCreatedBy() == null ? other.getCreatedBy() == null : this.getCreatedBy().equals(other.getCreatedBy()))
            && (this.getUpdatedBy() == null ? other.getUpdatedBy() == null : this.getUpdatedBy().equals(other.getUpdatedBy()))
            && (this.getCountryOfOrigin() == null ? other.getCountryOfOrigin() == null : this.getCountryOfOrigin().equals(other.getCountryOfOrigin()))
            && (this.getShippingWeight() == null ? other.getShippingWeight() == null : this.getShippingWeight().equals(other.getShippingWeight()))
            && (this.getShippingDimensions() == null ? other.getShippingDimensions() == null : this.getShippingDimensions().equals(other.getShippingDimensions()))
            && (this.getKeywords() == null ? other.getKeywords() == null : this.getKeywords().equals(other.getKeywords()))
            && (this.getImages() == null ? other.getImages() == null : this.getImages().equals(other.getImages()))
            && (this.getVideoURL() == null ? other.getVideoURL() == null : this.getVideoURL().equals(other.getVideoURL()))
            && (this.getTechnicalSpecifications() == null ? other.getTechnicalSpecifications() == null : this.getTechnicalSpecifications().equals(other.getTechnicalSpecifications()))
            && (this.getCompatibilityNotes() == null ? other.getCompatibilityNotes() == null : this.getCompatibilityNotes().equals(other.getCompatibilityNotes()))
            && (this.getAssemblyRequired() == null ? other.getAssemblyRequired() == null : this.getAssemblyRequired().equals(other.getAssemblyRequired()))
            && (this.getAssemblyInstructions() == null ? other.getAssemblyInstructions() == null : this.getAssemblyInstructions().equals(other.getAssemblyInstructions()))
            && (this.getUserManualURL() == null ? other.getUserManualURL() == null : this.getUserManualURL().equals(other.getUserManualURL()))
            && (this.getSafetyWarnings() == null ? other.getSafetyWarnings() == null : this.getSafetyWarnings().equals(other.getSafetyWarnings()))
            && (this.getReviewsAverage() == null ? other.getReviewsAverage() == null : this.getReviewsAverage().equals(other.getReviewsAverage()))
            && (this.getNumReviews() == null ? other.getNumReviews() == null : this.getNumReviews().equals(other.getNumReviews()))
            && (this.getRatingCount() == null ? other.getRatingCount() == null : this.getRatingCount().equals(other.getRatingCount()))
            && (this.getIsFeatured() == null ? other.getIsFeatured() == null : this.getIsFeatured().equals(other.getIsFeatured()))
            && (this.getIsOnSale() == null ? other.getIsOnSale() == null : this.getIsOnSale().equals(other.getIsOnSale()))
            && (this.getPromotionEndDate() == null ? other.getPromotionEndDate() == null : this.getPromotionEndDate().equals(other.getPromotionEndDate()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getProductID() == null) ? 0 : getProductID().hashCode());
        result = prime * result + ((getProductName() == null) ? 0 : getProductName().hashCode());
        result = prime * result + ((getProductDescription() == null) ? 0 : getProductDescription().hashCode());
        result = prime * result + ((getCategoryID() == null) ? 0 : getCategoryID().hashCode());
        result = prime * result + ((getSubCategoryID() == null) ? 0 : getSubCategoryID().hashCode());
        result = prime * result + ((getBrandID() == null) ? 0 : getBrandID().hashCode());
        result = prime * result + ((getSupplierID() == null) ? 0 : getSupplierID().hashCode());
        result = prime * result + ((getManufacturerID() == null) ? 0 : getManufacturerID().hashCode());
        result = prime * result + ((getModelNumber() == null) ? 0 : getModelNumber().hashCode());
        result = prime * result + ((getSKU() == null) ? 0 : getSKU().hashCode());
        result = prime * result + ((getUPC() == null) ? 0 : getUPC().hashCode());
        result = prime * result + ((getEAN() == null) ? 0 : getEAN().hashCode());
        result = prime * result + ((getISBN() == null) ? 0 : getISBN().hashCode());
        result = prime * result + ((getWeight() == null) ? 0 : getWeight().hashCode());
        result = prime * result + ((getDimensions() == null) ? 0 : getDimensions().hashCode());
        result = prime * result + ((getColor() == null) ? 0 : getColor().hashCode());
        result = prime * result + ((getMaterial() == null) ? 0 : getMaterial().hashCode());
        result = prime * result + ((getIsDiscontinued() == null) ? 0 : getIsDiscontinued().hashCode());
        result = prime * result + ((getDiscontinuedDate() == null) ? 0 : getDiscontinuedDate().hashCode());
        result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode());
        result = prime * result + ((getMSRP() == null) ? 0 : getMSRP().hashCode());
        result = prime * result + ((getSalePrice() == null) ? 0 : getSalePrice().hashCode());
        result = prime * result + ((getDiscountPercentage() == null) ? 0 : getDiscountPercentage().hashCode());
        result = prime * result + ((getStockQuantity() == null) ? 0 : getStockQuantity().hashCode());
        result = prime * result + ((getReorderLevel() == null) ? 0 : getReorderLevel().hashCode());
        result = prime * result + ((getRestockDate() == null) ? 0 : getRestockDate().hashCode());
        result = prime * result + ((getWarrantyPeriod() == null) ? 0 : getWarrantyPeriod().hashCode());
        result = prime * result + ((getWarrantyType() == null) ? 0 : getWarrantyType().hashCode());
        result = prime * result + ((getReleaseDate() == null) ? 0 : getReleaseDate().hashCode());
        result = prime * result + ((getLastUpdated() == null) ? 0 : getLastUpdated().hashCode());
        result = prime * result + ((getCreatedBy() == null) ? 0 : getCreatedBy().hashCode());
        result = prime * result + ((getUpdatedBy() == null) ? 0 : getUpdatedBy().hashCode());
        result = prime * result + ((getCountryOfOrigin() == null) ? 0 : getCountryOfOrigin().hashCode());
        result = prime * result + ((getShippingWeight() == null) ? 0 : getShippingWeight().hashCode());
        result = prime * result + ((getShippingDimensions() == null) ? 0 : getShippingDimensions().hashCode());
        result = prime * result + ((getKeywords() == null) ? 0 : getKeywords().hashCode());
        result = prime * result + ((getImages() == null) ? 0 : getImages().hashCode());
        result = prime * result + ((getVideoURL() == null) ? 0 : getVideoURL().hashCode());
        result = prime * result + ((getTechnicalSpecifications() == null) ? 0 : getTechnicalSpecifications().hashCode());
        result = prime * result + ((getCompatibilityNotes() == null) ? 0 : getCompatibilityNotes().hashCode());
        result = prime * result + ((getAssemblyRequired() == null) ? 0 : getAssemblyRequired().hashCode());
        result = prime * result + ((getAssemblyInstructions() == null) ? 0 : getAssemblyInstructions().hashCode());
        result = prime * result + ((getUserManualURL() == null) ? 0 : getUserManualURL().hashCode());
        result = prime * result + ((getSafetyWarnings() == null) ? 0 : getSafetyWarnings().hashCode());
        result = prime * result + ((getReviewsAverage() == null) ? 0 : getReviewsAverage().hashCode());
        result = prime * result + ((getNumReviews() == null) ? 0 : getNumReviews().hashCode());
        result = prime * result + ((getRatingCount() == null) ? 0 : getRatingCount().hashCode());
        result = prime * result + ((getIsFeatured() == null) ? 0 : getIsFeatured().hashCode());
        result = prime * result + ((getIsOnSale() == null) ? 0 : getIsOnSale().hashCode());
        result = prime * result + ((getPromotionEndDate() == null) ? 0 : getPromotionEndDate().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", productID=").append(productID);
        sb.append(", productName=").append(productName);
        sb.append(", productDescription=").append(productDescription);
        sb.append(", categoryID=").append(categoryID);
        sb.append(", subCategoryID=").append(subCategoryID);
        sb.append(", brandID=").append(brandID);
        sb.append(", supplierID=").append(supplierID);
        sb.append(", manufacturerID=").append(manufacturerID);
        sb.append(", modelNumber=").append(modelNumber);
        sb.append(", SKU=").append(SKU);
        sb.append(", UPC=").append(UPC);
        sb.append(", EAN=").append(EAN);
        sb.append(", ISBN=").append(ISBN);
        sb.append(", weight=").append(weight);
        sb.append(", dimensions=").append(dimensions);
        sb.append(", color=").append(color);
        sb.append(", material=").append(material);
        sb.append(", isDiscontinued=").append(isDiscontinued);
        sb.append(", discontinuedDate=").append(discontinuedDate);
        sb.append(", price=").append(price);
        sb.append(", MSRP=").append(MSRP);
        sb.append(", salePrice=").append(salePrice);
        sb.append(", discountPercentage=").append(discountPercentage);
        sb.append(", stockQuantity=").append(stockQuantity);
        sb.append(", reorderLevel=").append(reorderLevel);
        sb.append(", restockDate=").append(restockDate);
        sb.append(", warrantyPeriod=").append(warrantyPeriod);
        sb.append(", warrantyType=").append(warrantyType);
        sb.append(", releaseDate=").append(releaseDate);
        sb.append(", lastUpdated=").append(lastUpdated);
        sb.append(", createdBy=").append(createdBy);
        sb.append(", updatedBy=").append(updatedBy);
        sb.append(", countryOfOrigin=").append(countryOfOrigin);
        sb.append(", shippingWeight=").append(shippingWeight);
        sb.append(", shippingDimensions=").append(shippingDimensions);
        sb.append(", keywords=").append(keywords);
        sb.append(", images=").append(images);
        sb.append(", videoURL=").append(videoURL);
        sb.append(", technicalSpecifications=").append(technicalSpecifications);
        sb.append(", compatibilityNotes=").append(compatibilityNotes);
        sb.append(", assemblyRequired=").append(assemblyRequired);
        sb.append(", assemblyInstructions=").append(assemblyInstructions);
        sb.append(", userManualURL=").append(userManualURL);
        sb.append(", safetyWarnings=").append(safetyWarnings);
        sb.append(", reviewsAverage=").append(reviewsAverage);
        sb.append(", numReviews=").append(numReviews);
        sb.append(", ratingCount=").append(ratingCount);
        sb.append(", isFeatured=").append(isFeatured);
        sb.append(", isOnSale=").append(isOnSale);
        sb.append(", promotionEndDate=").append(promotionEndDate);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}